home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / reve / TODO < prev    next >
Encoding:
Text File  |  1995-05-03  |  18.2 KB  |  378 lines

  1.  
  2. /*  @(#)TODO 1.26 91/11/13
  3.  *
  4.  *  Copyright (C) 1990, 1991 - Rich Burridge & Yves Gallot.
  5.  *  All rights reserved.
  6.  *
  7.  *  Permission is granted to copy this source, for redistribution
  8.  *  in source form only, provided the news headers in "substantially
  9.  *  unaltered format" are retained, the introductory messages are not
  10.  *  removed, and no monies are exchanged.
  11.  *
  12.  *  Permission is also granted to copy this source, without the
  13.  *  news headers, for the purposes of making an executable copy by
  14.  *  means of compilation, provided that such copy will not be used
  15.  *  for the purposes of competition in any othello tournaments, without
  16.  *  prior permission from the authors.
  17.  *
  18.  *  No responsibility is taken for any errors on inaccuracies inherent
  19.  *  either to the comments or the code of this program, but if reported
  20.  *  (see README file), then an attempt will be made to fix them.
  21.  */
  22.  
  23. Known problems.
  24. ===============
  25.  
  26. *  From Nick Sayer <mrapple@quack.sac.ca.us>
  27.    System is a Sun 2/170 running SunOS 4.0, using the TTY version on a
  28.    TVI-925. Reve makes a mess on so called "magic-cookie" terminals.
  29.  
  30. *  With the X11 version, if you are dragging the mouse as the computer is
  31.    placing it's piece, and "Animate Move" is set on, then bogus pieces are
  32.    displayed.
  33.  
  34. *  Allow the computer to play itself. Currently this option is disabled,
  35.    because of the inability with some of the graphics versions to interrupt
  36.    it, once it's started.
  37.  
  38. *  There are several problems outstanding with the XView version:
  39.    ~ **IMPORTANT** It's still possible to hang the server, if the left
  40.                    mouse button is clicked at the wrong time.
  41.    ~ The hourglass cursor should be drawn in XOR mode.
  42.    ~ The game board isn't correctly painted with the -m command line option.
  43.    ~ It should be possible to start a load/save by just typing Return in the
  44.      Load/Save popup.
  45.    ~ Need to add XV_HELP_DATA attributes to each item, and create a reve.info
  46.      file with help information.
  47.    ~ The initial position of the reve window is coming up randomly. If it's
  48.      position isn't given on the command line, it should start at (0,0).
  49.    ~ The control panel should come up immediately under the game board.
  50.    ~ The position_popup() routine needs to make sure that popups are always
  51.      fully displayed on the screen.
  52.  
  53. *  Need to add in the ability to show the last move, and show all moves to
  54.    the tty version.
  55.  
  56. *  From raskin@skatter.usask.ca
  57.    With the tty version, sometimes, at the beginning of the game, reve will
  58.    ignore my keystrokes for my first move, i.e., typing "d3" won't generate
  59.    a "Move:d3" message and the program just sits there.
  60.  
  61. *  From Robert Cohen <robert@anucsd.anu.oz.au>
  62.    It would be nice if the help and props windows vanished when you iconise
  63.    the main window.
  64.  
  65. *  From Tom Friedel <tpf@jdyx.atlanta.ga.us>
  66.    When I use reve on a 16 bit display there are three lines for the icon.
  67.    On 8 and 4 bit displays I have a few circles for the icon. The icon code
  68.    appears to be hard-wired for mono or 8bit screen; it should use something
  69.    like XGetImage instead.
  70.  
  71. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  72.    Inside the Props window, the bottom-left pixel and the one above it
  73.    belonging to the checkboxes is WHITE rather than black on a mono display.
  74.    In other words, the checkboxes look 'open' in the bottom-left corner. The
  75.    checkboxes are, surprisingly, OK on colour displays though.
  76.  
  77. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  78.    When running twm, both the Props and Help window cannot be properly
  79.    iconified by clicking on the twm iconify widget present in the window's
  80.    title bar. The windows *do* iconify, but then immediately de-iconify
  81.    themselves back to normal again! The main board window seems to iconify OK
  82.    though.
  83.  
  84. *  From Robert Cohen <robert@anucsd.anu.edu.au>
  85.    If you set a search depth then go back to a difficulty it doesn't seem to
  86.    reset max_depth to 2.
  87.  
  88. *  From Robert Cohen <robert@anucsd.anu.edu.au>
  89.    There's a couple of funnies about the behaviour of the amount of computer
  90.    time left when you change level or undo moves. Changing levels doesnt
  91.    affect the record of time left in the undo list so if you make a move at
  92.    a low level, change to a high level, make a move and then undo, it thinks
  93.    you have very little time left even though you are on a high level.
  94.    Also changing levels resets the computer time to the entire quota for
  95.    that level. Surely it should be relative to how far you are thru the game
  96.    eg. half way thru the game gets 1/2 of the quota for that level.
  97.  
  98. *  From Valerie Haecky <vmh@Eng.Sun.COM>
  99.    When entering a game using two human players, there is no way of making
  100.    one of them pass. I tried to switch to computer mode for one move, and
  101.    let the computer pass, but when I switch back to all human, reve dies
  102.    spectacularly.
  103.  
  104. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  105.    With the recent resizing of the board in reve v1.2, I'm getting the
  106.    "dotted line" problem as the outline around white pieces. This is with
  107.    the X11 (Xlib) version on a mono screen, under HP-UX v7.0.
  108.  
  109. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  110.    The Imakefile compilation doesn't quite conform to normal
  111.    "standards". The "reve_proc" program should compiled with
  112.    a straightforward "make x11" command, but it doesn't actually
  113.    end up getting compiled until you do a "make install" !
  114.  
  115. *  From Michael Glad <glad@daimi.aau.dk>
  116.    If you use the 'undo' button, reve gets confused. If running at level 5,
  117.    the effective level drops to an estimated 2.
  118.  
  119.  
  120. Suggested enhancements.
  121. =======================
  122.  
  123. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  124.    Supply a way of forcing the computer to move before its search is complete.
  125.    This would be very handy at the higher levels.
  126.  
  127.    If we can actually see what moves have been though about so far, then you
  128.    may no longer be left in the dark as to what the computer is doing (you can
  129.    manually stop it thinking when it finds a really strong move for example).
  130.    As an afterthought, I realised that it would be nice to know what ply
  131.    level the search is currently up to.
  132.  
  133.    An even neater trick would be to number each square with its position in
  134.    the best move list. You could either show this at the end of each ply or
  135.    update in real-time (in which case, the numbered squares would need to be
  136.    cleared when the ply search is deepened to avoid confusion - also some
  137.    on-screen renumbering would have to be done on-the-fly).
  138.  
  139. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  140.    "New Game" should just undo the game right back to the start. That way
  141.    a player can use the move forwards facility to replay the game easily
  142.    right from the start. Of course, as soon as the player makes a new move,
  143.    then s/he won't be able to replay the game any further.
  144.  
  145. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  146.    Countdown clocks for blitz games (first to hit 00:00:00 loses if the game
  147.    is still in progress).
  148.  
  149. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  150.    From Valerie Haecky <vmh@Eng.Sun.COM>
  151.    Board editing. A 'setup' mode, where you can place stones on the board
  152.    (NOT moves). This is good for game analysis, puzzles, starting from a
  153.    specific opening (like Reve always plays perpendicular, and no-one knows
  154.    whether this is best, and it would be nice to set up other openings).
  155.    It has to be stones, not moves, because puzzles don't always contain legal
  156.    positions, and transcripts have bugs.
  157.  
  158. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  159.    A 'I will win/lose in x moves' announcement if a forced win/loss is
  160.    detected.
  161.  
  162. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  163.    When you click on Quit and have actually made some moves/changes, then
  164.    it would be nice to have a dialogue box pop up to say "Save game before
  165.    Quitting ?" with Yes, No and Cancel buttons in the box. Perhaps this could
  166.    be part of a .reverc/.Xresources setting, because some people might not
  167.    like the intrusion. This should probably apply to the "New Game" button
  168.    too come to think of it ("Save game before Restarting ?" in this case).
  169.  
  170. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  171.    Display the number of board positions searched so far. The frequency of
  172.    update is up to taste really - perhaps when the best move found is
  173.    updated. Tied in with this, you could give a "positions searched per
  174.    second" rating when the computer finishes its search and makes its move.
  175.    This would be a great measure of the speed of the machine/algorithm.
  176.  
  177. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  178.    Allow the level to be explicitly set in seconds per move (or perhaps
  179.    minutes per game as it currently is) rather than having a fixed set of
  180.    levels. The highest playing level could be called "Infinite" rather than
  181.    "Tournament" and just plays until interrupted or the game end is detected.
  182.  
  183. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  184.    Implement an "Equality" play mode which matches the computer playing time
  185.    exactly with the human's.
  186.  
  187. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  188.    Have a 3-D board option. It'd sure look great. You just need to angle the
  189.    edges inward from bottom to top and draw elipses rather than circles.
  190.    Taking this further, you come show a wood grained board, and a light
  191.    source up above for ray shaded stones.
  192.  
  193. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  194.    If you intend to implement on-screen clocks (hopefully in HH:MM:SS
  195.    format), then have options to reset them to zero at any time and also
  196.    to stop them (effectively a "Pause" mode) - perhaps that could be tied
  197.    in with iconification. Perhaps another option (or resource) to decide
  198.    whether the clocks should be analog or digital.
  199.  
  200. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  201.    Show the four "blobs" at the edges of the four central squares (top-left
  202.    of d4, top-right of d5, bottom-left of e4 and bottom-right of e5). No,
  203.    I don't know why they're there on commercial Othello boards in the first
  204.    place, except perhaps to mark the starting positions.
  205.  
  206. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  207.    Have some annoyingly intrusive comments during the game :-) Examples
  208.    could be: "That was a really bad move", "I'm crushing you", "This
  209.    position is boring", "Hurry up and make your move !" etc. etc.
  210.  
  211.    [Othello2, the predecesor of the graphics used in Reve, and posted to
  212.     comp.sources.games last year, used to have this ability - Rich.]
  213.  
  214. *  Try to get online copies of the two paper referenced in the README file.
  215.    Otherwise, add more comments to the computer strategy code.
  216.  
  217. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  218.    Allow the board to be rotated 90 degrees. The movelist will also have
  219.    to be adjusted of course.
  220.  
  221.    [Board rotation is only necessary, if we also support a printing
  222.     facility fro transcripts. For publishing games usually start
  223.     on c4. Also, if we want an opening library composed from
  224.     played games, or other learning mechanisms, we would have to
  225.     normalize the board. For a playing tool, this is not necessary - vmh.]
  226.  
  227. *  From Soren Hein <shein@ferdowsi.berkeley.edu>
  228.    Possible to give some strength indication of the levels? Maybe by
  229.    analogy with chess ratings, if you're familiar enough with Elo-ratings
  230.    to make guesses/comparisons.
  231.  
  232. *  From Soren Hein <shein@ferdowsi.berkeley.edu>
  233.    There should be symmetry between the case when the human can't move
  234.    and when there is only one move for them. Yet in one case the program just
  235.    goes on, and in the other, it waits for the only move. I would like to
  236.    give my OK to forfeit before the program takes its next move.
  237.  
  238. *  From Dan Bernstein <brnstnd@KRAMDEN.ACF.NYU.EDU>
  239.    An idea which can possibly be incorporated:
  240.  
  241.    Along with each board keep two arrays size 100 (it's easier on the code
  242.    to use artifical borders) of bytes. Each byte has a bit set if a player
  243.    can take from that spot in the direction numbered by the bit. This turns
  244.    out to be reasonably easy to maintain with the moves, and it makes legal
  245.    move checks and actual flips so fast that the program runs about three
  246.    times faster overall.
  247.  
  248. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  249.    Add in a move list window, which would contain a scrollable list of all
  250.    the moves so far (plus evaluation for the computers moves).
  251.  
  252. *  From: robert@anucsd.anu.oz.au (Robert Cohen)
  253.    In order to guage which of the machines you have available perform best as
  254.    Reve servers, or to choose between different compilers or to choose which
  255.    compiler switches to use, it would be useful to have a measure of how fast
  256.    Reve runs. You could have a switch that makes reve evaluate a particular
  257.    preset position to some set depth and then tells you how many positions a
  258.    second it checked. You could call this a rhevestone :-).
  259.  
  260.    Also by checking the answer it got against what it was supposed to get,
  261.    you would have a simple regression test for checking for compiler bugs
  262.    on new architectures.
  263.  
  264. *  From: robert@anucsd.anu.oz.au (Robert Cohen) 
  265.    A cute feature I noticed in the standard X11r4 othello is that it thinks
  266.    during the humans move time. If the person is a slow player this could make
  267.    an appreciable difference if only in giving reve quicker responses.
  268.  
  269.    From shein@ferdowsi.berkeley.edu (Soren Hein)
  270.    Is there any way the computer could utilize the opponent's time too?
  271.    (This would probably require major recoding. Something like first
  272.    guessing at the opponent's move using a shallow search, and then using
  273.    a shallow search to order the possible responses to aid the alpha-beta
  274.    search to deeper levels, once it becomes the computer's move again.)
  275.  
  276. *  From: robert@anucsd.anu.oz.au (Robert Cohen)
  277.    It would be nice to add a bit of variety to reve's play. This could be
  278.    done in a variety of ways. A simple approach would be to add some minor 
  279.    randomness to the evaluation function (optionally of course).
  280.    A more sophisticated approach would be to allow the user to tailor the
  281.    evaluation function. This could be either done as a fixed set of play styles
  282.    eg aggressive, cautious, unpredictable etc or by allowing the user to
  283.    change some numerical constants eg the weighting put on mobility by slider.
  284.    Of course there would be a "tournament" setting to make reve play as well as
  285.    possible.
  286.  
  287. *  From Michael Glad <glad@daimi.aau.dk>
  288.    Perhaps there should be a facility a'la SUN's chesstool to use the
  289.    interface of reve along with other othello programs. This would make it
  290.    easier to let them compete with each other.
  291.  
  292. *  From Robert Cohen <robert@anucsd.anu.edu.au>
  293.    A more general debugging system where there is a debugging print call you
  294.    can make that has a detail parameter indicating how "detailed" this message
  295.    is.  Then there would be a debugging window that by default would only
  296.    display the least detailed information eg a list of moves made but you
  297.    could set it to display the level of detail you wanted. Also you can get
  298.    the debugging information of a potentially different detail level stored
  299.    in a file. This would replace the current logging stuff.
  300.  
  301. *  From Thomas K. Bischoff <bisc@zellweger.ch>
  302.    Notes for improving the notation used by load/save game.
  303.  
  304.    The 'save game' file format is to verbose. You don't need two columns.
  305.     1,  <f-5>  [ note : 0 ]
  306.     2,  <d-6>  [ note : 0 ]
  307.     3,  <c-4>  [ note : 0 ]
  308.     4,   -     [ note : 60 ]
  309.     5,  <c-5>  [ note : 60 ]
  310.  
  311.    The standard notation for humans goes like this:
  312.         +--+--+--+--+--+--+--+--+
  313.         |55|42|41|40|36|34|54|53|
  314.         +--+--+--+--+--+--+--+--+
  315.         |58|57|43|39|35|13|52|19|
  316.         +--+--+--+--+--+--+--+--+
  317.         |47|46| 3| 4|11| 8|14|12|
  318.         +--+--+--+--+--+--+--+--+
  319.         |44|48| 5| W| B| 6| 9|16|
  320.         +--+--+--+--+--+--+--+--+
  321.         |49|33|22| B| W| 1|10|15|
  322.         +--+--+--+--+--+--+--+--+
  323.         |28|25|21| 2|30| 7|20|17|
  324.         +--+--+--+--+--+--+--+--+
  325.         |51|45|26|23|24|18|50|29|
  326.         +--+--+--+--+--+--+--+--+
  327.         |56|38|27|37|31|32|60|59|
  328.         +--+--+--+--+--+--+--+--+
  329.  
  330.    In this notation the passes don't get a move number, so there are at
  331.    most 60 moves.
  332.  
  333.    But in the text you see also a more chess like notation :
  334.    55.a1 b2; 57.a3 pass; 59.a7 b7; 61.a8
  335.  
  336.    Add more info to the 'save game' file format. Like who played, what
  337.    time limit/level, time left etc. This is important to get the computer
  338.    playing at the correct level, and to use the correct amount of time
  339.    left.
  340.  
  341. *  From Thomas K. Bischoff <bisc@zellweger.ch>
  342.    Make the computer player chooseable for both sides(black and white). This
  343.    would allow to test different computer algorithm against each other.
  344.    This could be done by choosing a name in the prop panel, which is the name
  345.    of the program which gets forked.
  346.  
  347.  
  348. Items we're unlikely to implement.
  349. ==================================
  350.  
  351. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  352.    From Soren Hein <shein@ferdowsi.berkeley.edu>
  353.    What about a 'Play Next Best' option? This would undo the last computer
  354.    move and play the second best move found rather than the best one. If
  355.    selected again, there would be another undo and the third best move would
  356.    be made instead and so on, until the move list is exhausted. It's great
  357.    for trying out different moves in the same position.
  358.  
  359.    [There is currently no ordering move list, because a search can be stopped
  360.     by the alarm. Then the move list is only 1 or 2 moves length - Yves.]
  361.  
  362. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  363.    A display of the full tree for the best move rather than just the best
  364.    move itself.
  365.  
  366.    [In my algorithm, it is impossible to have it. How do want to know, when
  367.     you are in the tree, that it will be the best move ? And when you know it,
  368.     it is impossible to know where you were in the tree - Yves.]
  369.  
  370. *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  371.    A resign feature if the search shows a completely lost endgame.
  372.  
  373.    [Othello is not chess. The result is the disks differential, not win,
  374.     tie or loss. And I don't know if it is a "completely lost endgame". I
  375.     only know that if the opponent is perfect, then I will lose. A human
  376.     player that should win at move 46 and doesn't use undo, can very easily
  377.     lose - Yves.]
  378.